#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
音频警报功能诊断脚本
"""

import os
import sys

def check_dependencies():
    """检查依赖库"""
    print("=== 检查依赖库 ===")
    
    # 检查pygame
    try:
        import pygame
        print(f"✓ pygame 已安装，版本: {pygame.version.ver}")
    except ImportError:
        print("✗ pygame 未安装")
        print("请运行: pip install pygame")
        return False
    
    return True

def check_audio_file():
    """检查音频文件"""
    print("\n=== 检查音频文件 ===")
    
    audio_file = "siren.wav"
    if os.path.exists(audio_file):
        file_size = os.path.getsize(audio_file)
        print(f"✓ 音频文件存在: {audio_file}")
        print(f"  文件大小: {file_size} 字节")
        return True
    else:
        print(f"✗ 音频文件不存在: {audio_file}")
        print("请下载警笛音频文件并重命名为 siren.wav")
        return False

def test_pygame_audio():
    """测试pygame音频功能"""
    print("\n=== 测试pygame音频功能 ===")
    
    try:
        import pygame
        
        # 初始化pygame
        pygame.init()
        print("✓ pygame 初始化成功")
        
        # 初始化音频
        pygame.mixer.init()
        print("✓ pygame mixer 初始化成功")
        
        # 检查音频文件
        audio_file = "siren.wav"
        if os.path.exists(audio_file):
            try:
                pygame.mixer.music.load(audio_file)
                print("✓ 音频文件加载成功")
                return True
            except Exception as e:
                print(f"✗ 音频文件加载失败: {e}")
                return False
        else:
            print("✗ 音频文件不存在，无法测试")
            return False
            
    except Exception as e:
        print(f"✗ pygame 音频测试失败: {e}")
        return False

def check_system_audio():
    """检查系统音频"""
    print("\n=== 检查系统音频 ===")
    
    import platform
    system = platform.system()
    print(f"操作系统: {system}")
    
    if system == "Windows":
        print("Windows系统音频支持通常较好")
    elif system == "Linux":
        print("Linux系统可能需要安装音频驱动")
    elif system == "Darwin":  # macOS
        print("macOS系统音频支持通常较好")
    
    return True

def main():
    """主诊断函数"""
    print("音频警报功能诊断工具")
    print("=" * 50)
    
    all_passed = True
    
    # 检查依赖
    if not check_dependencies():
        all_passed = False
    
    # 检查音频文件
    if not check_audio_file():
        all_passed = False
    
    # 测试pygame音频
    if not test_pygame_audio():
        all_passed = False
    
    # 检查系统音频设置
    check_system_audio()
    
    print("\n=== 诊断结果 ===")
    if all_passed:
        print("✓ 所有检查都通过，音频功能应该正常工作")
        print("\n建议:")
        print("1. 运行 test_audio.py 测试音频播放")
        print("2. 运行主程序并选择ROI区域")
        print("3. 当检测到多个轮廓时应该听到警报声")
    else:
        print("✗ 发现问题，请根据上述提示修复")
        print("\n常见解决方案:")
        print("1. 安装pygame: pip install pygame")
        print("2. 下载警笛音频文件并重命名为 siren.wav")
        print("3. 检查系统音频设置")
        print("4. 在Linux系统上可能需要安装音频驱动")

if __name__ == "__main__":
    main()